/* Zepto 1.0rc1 - polyfill zepto event fx ajax form fx_methods selector - zeptojs.com/license */
(function (e) {
    String.prototype.trim === e && (String.prototype.trim = function () {
        return this.replace(/^\s+/, "").replace(/\s+$/, "")
    }), Array.prototype.reduce === e && (Array.prototype.reduce = function (t) {
        if (this === void 0 || this === null)throw new TypeError;
        var n = Object(this), r = n.length >>> 0, i = 0, s;
        if (typeof t != "function")throw new TypeError;
        if (r == 0 && arguments.length == 1)throw new TypeError;
        if (arguments.length >= 2)s = arguments[1]; else do {
            if (i in n) {
                s = n[i++];
                break
            }
            if (++i >= r)throw new TypeError
        } while (!0);
        while (i < r)i in n && (s = t.call(e, s, n[i], i, n)), i++;
        return s
    })
})();
var Zepto = function () {
    function A(e) {
        return e == null ? String(e) : T[toString.call(e)] || "object"
    }

    function O(e) {
        return A(e) == "function"
    }

    function M(e) {
        return e != null && e == e.window
    }

    function _(e) {
        return e != null && e.nodeType == e.DOCUMENT_NODE
    }

    function D(e) {
        return A(e) == "object"
    }

    function P(e) {
        return D(e) && !M(e) && e.__proto__ == Object.prototype
    }

    function H(e) {
        return e instanceof Array
    }

    function B(e) {
        return typeof e.length == "number"
    }

    function j(e) {
        return o.call(e, function (e) {
            return e != null
        })
    }

    function F(e) {
        return e.length > 0 ? n.fn.concat.apply([], e) : e
    }

    function I(e) {
        return e.replace(/::/g, "/").replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/_/g, "-").toLowerCase()
    }

    function q(e) {
        return e in f ? f[e] : f[e] = new RegExp("(^|\\s)" + e + "(\\s|$)")
    }

    function R(e, t) {
        return typeof t == "number" && !c[I(e)] ? t + "px" : t
    }

    function U(e) {
        var t, n;
        return a[e] || (t = u.createElement(e), u.body.appendChild(t), n = l(t, "").getPropertyValue("display"), t.parentNode.removeChild(t), n == "none" && (n = "block"), a[e] = n), a[e]
    }

    function z(e) {
        return"children"in e ? s.call(e.children) : n.map(e.childNodes, function (e) {
            if (e.nodeType == 1)return e
        })
    }

    function W(n, r, i) {
        for (t in r)i && P(r[t]) ? (P(n[t]) || (n[t] = {}), W(n[t], r[t], i)) : r[t] !== e && (n[t] = r[t])
    }

    function X(t, r) {
        return r === e ? n(t) : n(t).filter(r)
    }

    function V(e, t, n, r) {
        return O(t) ? t.call(e, n, r) : t
    }

    function $(e, t, n) {
        n == null ? e.removeAttribute(t) : e.setAttribute(t, n)
    }

    function J(t, n) {
        var r = t.className, i = r && r.baseVal !== e;
        if (n === e)return i ? r.baseVal : r;
        i ? r.baseVal = n : t.className = n
    }

    function K(e) {
        var t;
        try {
            return e ? e == "true" || (e == "false" ? !1 : e == "null" ? null : isNaN(t = Number(e)) ? /^[\[\{]/.test(e) ? n.parseJSON(e) : e : t) : e
        } catch (r) {
            return e
        }
    }

    function Q(e, t) {
        t(e);
        for (var n in e.childNodes)Q(e.childNodes[n], t)
    }

    var e, t, n, r, i = [], s = i.slice, o = i.filter, u = window.document, a = {}, f = {}, l = u.defaultView.getComputedStyle, c = {"column-count": 1, columns: 1, "font-weight": 1, "line-height": 1, opacity: 1, "z-index": 1, zoom: 1}, h = /^\s*<(\w+|!)[^>]*>/, p = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, d = /^(?:body|html)$/i, v = ["val", "css", "html", "text", "data", "width", "height", "offset"], m = ["after", "prepend", "before", "append"], g = u.createElement("table"), y = u.createElement("tr"), b = {tr: u.createElement("tbody"), tbody: g, thead: g, tfoot: g, td: y, th: y, "*": u.createElement("div")}, w = /complete|loaded|interactive/, E = /^\.([\w-]+)$/, S = /^#([\w-]*)$/, x = /^[\w-]+$/, T = {}, toString = T.toString, N = {}, C, k, L = u.createElement("div");
    return N.matches = function (e, t) {
        if (!e || e.nodeType !== 1)return!1;
        var n = e.webkitMatchesSelector || e.mozMatchesSelector || e.oMatchesSelector || e.matchesSelector;
        if (n)return n.call(e, t);
        var r, i = e.parentNode, s = !i;
        return s && (i = L).appendChild(e), r = ~N.qsa(i, t).indexOf(e), s && L.removeChild(e), r
    }, C = function (e) {
        return e.replace(/-+(.)?/g, function (e, t) {
            return t ? t.toUpperCase() : ""
        })
    }, k = function (e) {
        return o.call(e, function (t, n) {
            return e.indexOf(t) == n
        })
    }, N.fragment = function (t, r, i) {
        t.replace && (t = t.replace(p, "<$1></$2>")), r === e && (r = h.test(t) && RegExp.$1), r in b || (r = "*");
        var o, u, a = b[r];
        return a.innerHTML = "" + t, u = n.each(s.call(a.childNodes), function () {
            a.removeChild(this)
        }), P(i) && (o = n(u), n.each(i, function (e, t) {
            v.indexOf(e) > -1 ? o[e](t) : o.attr(e, t)
        })), u
    }, N.Z = function (e, t) {
        return e = e || [], e.__proto__ = n.fn, e.selector = t || "", e
    }, N.isZ = function (e) {
        return e instanceof N.Z
    }, N.init = function (t, r) {
        if (!t)return N.Z();
        if (O(t))return n(u).ready(t);
        if (N.isZ(t))return t;
        var i;
        if (H(t))i = j(t); else if (D(t))i = [P(t) ? n.extend({}, t) : t], t = null; else if (h.test(t))i = N.fragment(t.trim(), RegExp.$1, r), t = null; else {
            if (r !== e)return n(r).find(t);
            i = N.qsa(u, t)
        }
        return N.Z(i, t)
    }, n = function (e, t) {
        return N.init(e, t)
    }, n.extend = function (e) {
        var t, n = s.call(arguments, 1);
        return typeof e == "boolean" && (t = e, e = n.shift()), n.forEach(function (n) {
            W(e, n, t)
        }), e
    }, N.qsa = function (e, t) {
        var n;
        return _(e) && S.test(t) ? (n = e.getElementById(RegExp.$1)) ? [n] : [] : e.nodeType !== 1 && e.nodeType !== 9 ? [] : s.call(E.test(t) ? e.getElementsByClassName(RegExp.$1) : x.test(t) ? e.getElementsByTagName(t) : e.querySelectorAll(t))
    }, n.contains = function (e, t) {
        return e !== t && e.contains(t)
    }, n.type = A, n.isFunction = O, n.isWindow = M, n.isArray = H, n.isPlainObject = P, n.isEmptyObject = function (e) {
        var t;
        for (t in e)return!1;
        return!0
    }, n.inArray = function (e, t, n) {
        return i.indexOf.call(t, e, n)
    }, n.camelCase = C, n.trim = function (e) {
        return e.trim()
    }, n.uuid = 0, n.support = {}, n.expr = {}, n.map = function (e, t) {
        var n, r = [], i, s;
        if (B(e))for (i = 0; i < e.length; i++)n = t(e[i], i), n != null && r.push(n); else for (s in e)n = t(e[s], s), n != null && r.push(n);
        return F(r)
    }, n.each = function (e, t) {
        var n, r;
        if (B(e)) {
            for (n = 0; n < e.length; n++)if (t.call(e[n], n, e[n]) === !1)return e
        } else for (r in e)if (t.call(e[r], r, e[r]) === !1)return e;
        return e
    }, n.grep = function (e, t) {
        return o.call(e, t)
    }, window.JSON && (n.parseJSON = JSON.parse), n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function (e, t) {
        T["[object " + t + "]"] = t.toLowerCase()
    }), n.fn = {forEach: i.forEach, reduce: i.reduce, push: i.push, sort: i.sort, indexOf: i.indexOf, concat: i.concat, map: function (e) {
        return n(n.map(this, function (t, n) {
            return e.call(t, n, t)
        }))
    }, slice: function () {
        return n(s.apply(this, arguments))
    }, ready: function (e) {
        return w.test(u.readyState) ? e(n) : u.addEventListener("DOMContentLoaded", function () {
            e(n)
        }, !1), this
    }, get: function (t) {
        return t === e ? s.call(this) : this[t >= 0 ? t : t + this.length]
    }, toArray: function () {
        return this.get()
    }, size: function () {
        return this.length
    }, remove: function () {
        return this.each(function () {
            this.parentNode != null && this.parentNode.removeChild(this)
        })
    }, each: function (e) {
        return i.every.call(this, function (t, n) {
            return e.call(t, n, t) !== !1
        }), this
    }, filter: function (e) {
        return O(e) ? this.not(this.not(e)) : n(o.call(this, function (t) {
            return N.matches(t, e)
        }))
    }, add: function (e, t) {
        return n(k(this.concat(n(e, t))))
    }, is: function (e) {
        return this.length > 0 && N.matches(this[0], e)
    }, not: function (t) {
        var r = [];
        if (O(t) && t.call !== e)this.each(function (e) {
            t.call(this, e) || r.push(this)
        }); else {
            var i = typeof t == "string" ? this.filter(t) : B(t) && O(t.item) ? s.call(t) : n(t);
            this.forEach(function (e) {
                i.indexOf(e) < 0 && r.push(e)
            })
        }
        return n(r)
    }, has: function (e) {
        return this.filter(function () {
            return D(e) ? n.contains(this, e) : n(this).find(e).size()
        })
    }, eq: function (e) {
        return e === -1 ? this.slice(e) : this.slice(e, +e + 1)
    }, first: function () {
        var e = this[0];
        return e && !D(e) ? e : n(e)
    }, last: function () {
        var e = this[this.length - 1];
        return e && !D(e) ? e : n(e)
    }, find: function (e) {
        var t;
        return this.length == 1 ? t = n(N.qsa(this[0], e)) : t = this.map(function () {
            return N.qsa(this, e)
        }), t
    }, closest: function (e, t) {
        var r = this[0];
        while (r && !N.matches(r, e))r = r !== t && !_(r) && r.parentNode;
        return n(r)
    }, parents: function (e) {
        var t = [], r = this;
        while (r.length > 0)r = n.map(r, function (e) {
            if ((e = e.parentNode) && !_(e) && t.indexOf(e) < 0)return t.push(e), e
        });
        return X(t, e)
    }, parent: function (e) {
        return X(k(this.pluck("parentNode")), e)
    }, children: function (e) {
        return X(this.map(function () {
            return z(this)
        }), e)
    }, contents: function () {
        return this.map(function () {
            return s.call(this.childNodes)
        })
    }, siblings: function (e) {
        return X(this.map(function (e, t) {
            return o.call(z(t.parentNode), function (e) {
                return e !== t
            })
        }), e)
    }, empty: function () {
        return this.each(function () {
            this.innerHTML = ""
        })
    }, pluck: function (e) {
        return n.map(this, function (t) {
            return t[e]
        })
    }, show: function () {
        return this.each(function () {
            this.style.display == "none" && (this.style.display = null), l(this, "").getPropertyValue("display") == "none" && (this.style.display = U(this.nodeName))
        })
    }, replaceWith: function (e) {
        return this.before(e).remove()
    }, wrap: function (e) {
        var t = O(e);
        if (this[0] && !t)var r = n(e).get(0), i = r.parentNode || this.length > 1;
        return this.each(function (s) {
            n(this).wrapAll(t ? e.call(this, s) : i ? r.cloneNode(!0) : r)
        })
    }, wrapAll: function (e) {
        if (this[0]) {
            n(this[0]).before(e = n(e));
            var t;
            while ((t = e.children()).length)e = t.first();
            n(e).append(this)
        }
        return this
    }, wrapInner: function (e) {
        var t = O(e);
        return this.each(function (r) {
            var i = n(this), s = i.contents(), o = t ? e.call(this, r) : e;
            s.length ? s.wrapAll(o) : i.append(o)
        })
    }, unwrap: function () {
        return this.parent().each(function () {
            n(this).replaceWith(n(this).children())
        }), this
    }, clone: function () {
        return this.map(function () {
            return this.cloneNode(!0)
        })
    }, hide: function () {
        return this.css("display", "none")
    }, toggle: function (t) {
        return this.each(function () {
            var r = n(this);
            (t === e ? r.css("display") == "none" : t) ? r.show() : r.hide()
        })
    }, prev: function (e) {
        return n(this.pluck("previousElementSibling")).filter(e || "*")
    }, next: function (e) {
        return n(this.pluck("nextElementSibling")).filter(e || "*")
    }, html: function (t) {
        return t === e ? this.length > 0 ? this[0].innerHTML : null : this.each(function (e) {
            var r = this.innerHTML;
            n(this).empty().append(V(this, t, e, r))
        })
    }, text: function (t) {
        return t === e ? this.length > 0 ? this[0].textContent : null : this.each(function () {
            this.textContent = t
        })
    }, attr: function (n, r) {
        var i;
        return typeof n == "string" && r === e ? this.length == 0 || this[0].nodeType !== 1 ? e : n == "value" && this[0].nodeName == "INPUT" ? this.val() : !(i = this[0].getAttribute(n)) && n in this[0] ? this[0][n] : i : this.each(function (e) {
            if (this.nodeType !== 1)return;
            if (D(n))for (t in n)$(this, t, n[t]); else $(this, n, V(this, r, e, this.getAttribute(n)))
        })
    }, removeAttr: function (e) {
        return this.each(function () {
            this.nodeType === 1 && $(this, e)
        })
    }, prop: function (t, n) {
        return n === e ? this[0] && this[0][t] : this.each(function (e) {
            this[t] = V(this, n, e, this[t])
        })
    }, data: function (t, n) {
        var r = this.attr("data-" + I(t), n);
        return r !== null ? K(r) : e
    }, val: function (t) {
        return t === e ? this[0] && (this[0].multiple ? n(this[0]).find("option").filter(function (e) {
            return this.selected
        }).pluck("value") : this[0].value) : this.each(function (e) {
            this.value = V(this, t, e, this.value)
        })
    }, offset: function (e) {
        if (e)return this.each(function (t) {
            var r = n(this), i = V(this, e, t, r.offset()), s = r.offsetParent().offset(), o = {top: i.top - s.top, left: i.left - s.left};
            r.css("position") == "static" && (o.position = "relative"), r.css(o)
        });
        if (this.length == 0)return null;
        var t = this[0].getBoundingClientRect();
        return{left: t.left + window.pageXOffset, top: t.top + window.pageYOffset, width: t.width, height: t.height}
    }, css: function (e, n) {
        if (arguments.length < 2 && typeof e == "string")return this[0] && (this[0].style[C(e)] || l(this[0], "").getPropertyValue(e));
        var r = "";
        for (t in e)!e[t] && e[t] !== 0 ? this.each(function () {
            this.style.removeProperty(I(t))
        }) : r += I(t) + ":" + R(t, e[t]) + ";";
        return typeof e == "string" && (!n && n !== 0 ? this.each(function () {
            this.style.removeProperty(I(e))
        }) : r = I(e) + ":" + R(e, n)), this.each(function () {
            this.style.cssText += ";" + r
        })
    }, index: function (e) {
        return e ? this.indexOf(n(e)[0]) : this.parent().children().indexOf(this[0])
    }, hasClass: function (e) {
        return i.some.call(this, function (e) {
            return this.test(J(e))
        }, q(e))
    }, addClass: function (e) {
        return this.each(function (t) {
            r = [];
            var i = J(this), s = V(this, e, t, i);
            s.split(/\s+/g).forEach(function (e) {
                n(this).hasClass(e) || r.push(e)
            }, this), r.length && J(this, i + (i ? " " : "") + r.join(" "))
        })
    }, removeClass: function (t) {
        return this.each(function (n) {
            if (t === e)return J(this, "");
            r = J(this), V(this, t, n, r).split(/\s+/g).forEach(function (e) {
                r = r.replace(q(e), " ")
            }), J(this, r.trim())
        })
    }, toggleClass: function (t, r) {
        return this.each(function (i) {
            var s = n(this), o = V(this, t, i, J(this));
            o.split(/\s+/g).forEach(function (t) {
                (r === e ? !s.hasClass(t) : r) ? s.addClass(t) : s.removeClass(t)
            })
        })
    }, scrollTop: function () {
        if (!this.length)return;
        return"scrollTop"in this[0] ? this[0].scrollTop : this[0].scrollY
    }, scrollLeft: function () {
        if (!this.length)return;
        return"scrollLeft"in this[0] ? this[0].scrollLeft : this[0].scrollX
    }, position: function () {
        if (!this.length)return;
        var e = this[0], t = this.offsetParent(), r = this.offset(), i = d.test(t[0].nodeName) ? {top: 0, left: 0} : t.offset();
        return r.top -= parseFloat(n(e).css("margin-top")) || 0, r.left -= parseFloat(n(e).css("margin-left")) || 0, i.top += parseFloat(n(t[0]).css("border-top-width")) || 0, i.left += parseFloat(n(t[0]).css("border-left-width")) || 0, {top: r.top - i.top, left: r.left - i.left}
    }, offsetParent: function () {
        return this.map(function () {
            var e = this.offsetParent || u.body;
            while (e && !d.test(e.nodeName) && n(e).css("position") == "static")e = e.offsetParent;
            return e
        })
    }}, n.fn.detach = n.fn.remove, ["width", "height"].forEach(function (t) {
        n.fn[t] = function (r) {
            var i, s = this[0], o = t.replace(/./, function (e) {
                return e[0].toUpperCase()
            });
            return r === e ? M(s) ? s["inner" + o] : _(s) ? s.documentElement["offset" + o] : (i = this.offset()) && i[t] : this.each(function (e) {
                s = n(this), s.css(t, V(this, r, e, s[t]()))
            })
        }
    }), m.forEach(function (e, t) {
        var r = t % 2;
        n.fn[e] = function () {
            var e, i = n.map(arguments, function (t) {
                return e = A(t), e == "object" || e == "array" ? t : N.fragment(t)
            }), s, o = this.length > 1;
            return i.length < 1 ? this : this.each(function (e, u) {
                s = r ? u : u.parentNode, u = t == 0 ? u.nextSibling : t == 1 ? u.firstChild : t == 2 ? u : null, i.forEach(function (e) {
                    if (o)e = e.cloneNode(!0); else if (!s)return n(e).remove();
                    Q(s.insertBefore(e, u), function (e) {
                        e.nodeName != null && e.nodeName.toUpperCase() === "SCRIPT" && (!e.type || e.type === "text/javascript") && !e.src && window.eval.call(window, e.innerHTML)
                    })
                })
            })
        }, n.fn[r ? e + "To" : "insert" + (t ? "Before" : "After")] = function (t) {
            return n(t)[e](this), this
        }
    }), N.Z.prototype = n.fn, N.uniq = k, N.deserializeValue = K, n.zepto = N, n
}();
window.Zepto = Zepto, "$"in window || (window.$ = Zepto), function (e) {
    function o(e) {
        return e._zid || (e._zid = r++)
    }

    function u(e, t, r, i) {
        t = a(t);
        if (t.ns)var s = f(t.ns);
        return(n[o(e)] || []).filter(function (e) {
            return e && (!t.e || e.e == t.e) && (!t.ns || s.test(e.ns)) && (!r || o(e.fn) === o(r)) && (!i || e.sel == i)
        })
    }

    function a(e) {
        var t = ("" + e).split(".");
        return{e: t[0], ns: t.slice(1).sort().join(" ")}
    }

    function f(e) {
        return new RegExp("(?:^| )" + e.replace(" ", " .* ?") + "(?: |$)")
    }

    function l(t, n, r) {
        e.type(t) != "string" ? e.each(t, r) : t.split(/\s/).forEach(function (e) {
            r(e, n)
        })
    }

    function c(e, t) {
        return e.del && (e.e == "focus" || e.e == "blur") || !!t
    }

    function h(e) {
        return s[e] || e
    }

    function p(t, r, i, u, f, p) {
        var d = o(t), v = n[d] || (n[d] = []);
        l(r, i, function (n, r) {
            var i = a(n);
            i.fn = r, i.sel = u, i.e in s && (r = function (t) {
                var n = t.relatedTarget;
                if (!n || n !== this && !e.contains(this, n))return i.fn.apply(this, arguments)
            }), i.del = f && f(r, n);
            var o = i.del || r;
            i.proxy = function (e) {
                var n = o.apply(t, [e].concat(e.data));
                return n === !1 && (e.preventDefault(), e.stopPropagation()), n
            }, i.i = v.length, v.push(i), t.addEventListener(h(i.e), i.proxy, c(i, p))
        })
    }

    function d(e, t, r, i, s) {
        var a = o(e);
        l(t || "", r, function (t, r) {
            u(e, t, r, i).forEach(function (t) {
                delete n[a][t.i], e.removeEventListener(h(t.e), t.proxy, c(t, s))
            })
        })
    }

    function b(t) {
        var n, r = {originalEvent: t};
        for (n in t)!g.test(n) && t[n] !== undefined && (r[n] = t[n]);
        return e.each(y, function (e, n) {
            r[e] = function () {
                return this[n] = v, t[e].apply(t, arguments)
            }, r[n] = m
        }), r
    }

    function w(e) {
        if (!("defaultPrevented"in e)) {
            e.defaultPrevented = !1;
            var t = e.preventDefault;
            e.preventDefault = function () {
                this.defaultPrevented = !0, t.call(this)
            }
        }
    }

    var t = e.zepto.qsa, n = {}, r = 1, i = {}, s = {mouseenter: "mouseover", mouseleave: "mouseout"};
    i.click = i.mousedown = i.mouseup = i.mousemove = "MouseEvents", e.event = {add: p, remove: d}, e.proxy = function (t, n) {
        if (e.isFunction(t)) {
            var r = function () {
                return t.apply(n, arguments)
            };
            return r._zid = o(t), r
        }
        if (typeof n == "string")return e.proxy(t[n], t);
        throw new TypeError("expected function")
    }, e.fn.bind = function (e, t) {
        return this.each(function () {
            p(this, e, t)
        })
    }, e.fn.unbind = function (e, t) {
        return this.each(function () {
            d(this, e, t)
        })
    }, e.fn.one = function (e, t) {
        return this.each(function (n, r) {
            p(this, e, t, null, function (e, t) {
                return function () {
                    var n = e.apply(r, arguments);
                    return d(r, t, e), n
                }
            })
        })
    };
    var v = function () {
        return!0
    }, m = function () {
        return!1
    }, g = /^([A-Z]|layer[XY]$)/, y = {preventDefault: "isDefaultPrevented", stopImmediatePropagation: "isImmediatePropagationStopped", stopPropagation: "isPropagationStopped"};
    e.fn.delegate = function (t, n, r) {
        return this.each(function (i, s) {
            p(s, n, r, t, function (n) {
                return function (r) {
                    var i, o = e(r.target).closest(t, s).get(0);
                    if (o)return i = e.extend(b(r), {currentTarget: o, liveFired: s}), n.apply(o, [i].concat([].slice.call(arguments, 1)))
                }
            })
        })
    }, e.fn.undelegate = function (e, t, n) {
        return this.each(function () {
            d(this, t, n, e)
        })
    }, e.fn.live = function (t, n) {
        return e(document.body).delegate(this.selector, t, n), this
    }, e.fn.die = function (t, n) {
        return e(document.body).undelegate(this.selector, t, n), this
    }, e.fn.on = function (t, n, r) {
        return!n || e.isFunction(n) ? this.bind(t, n || r) : this.delegate(n, t, r)
    }, e.fn.off = function (t, n, r) {
        return!n || e.isFunction(n) ? this.unbind(t, n || r) : this.undelegate(n, t, r)
    }, e.fn.trigger = function (t, n) {
        if (typeof t == "string" || e.isPlainObject(t))t = e.Event(t);
        return w(t), t.data = n, this.each(function () {
            "dispatchEvent"in this && this.dispatchEvent(t)
        })
    }, e.fn.triggerHandler = function (t, n) {
        var r, i;
        return this.each(function (s, o) {
            r = b(typeof t == "string" ? e.Event(t) : t), r.data = n, r.target = o, e.each(u(o, t.type || t), function (e, t) {
                i = t.proxy(r);
                if (r.isImmediatePropagationStopped())return!1
            })
        }), i
    }, "focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function (t) {
        e.fn[t] = function (e) {
            return e ? this.bind(t, e) : this.trigger(t)
        }
    }), ["focus", "blur"].forEach(function (t) {
        e.fn[t] = function (e) {
            return e ? this.bind(t, e) : this.each(function () {
                try {
                    this[t]()
                } catch (e) {
                }
            }), this
        }
    }), e.Event = function (e, t) {
        typeof e != "string" && (t = e, e = t.type);
        var n = document.createEvent(i[e] || "Events"), r = !0;
        if (t)for (var s in t)s == "bubbles" ? r = !!t[s] : n[s] = t[s];
        return n.initEvent(e, r, !0, null, null, null, null, null, null, null, null, null, null, null, null), n.isDefaultPrevented = function () {
            return this.defaultPrevented
        }, n
    }
}(Zepto), function (e, t) {
    function y(e) {
        return b(e.replace(/([a-z])([A-Z])/, "$1-$2"))
    }

    function b(e) {
        return e.toLowerCase()
    }

    function w(e) {
        return r ? r + e : b(e)
    }

    var n = "", r, i, s, o = {Webkit: "webkit", Moz: "", O: "o", ms: "MS"}, u = window.document, a = u.createElement("div"), f = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i, l, c, h, p, d, v, m, g = {};
    e.each(o, function (e, i) {
        if (a.style[e + "TransitionProperty"] !== t)return n = "-" + b(e) + "-", r = i, !1
    }), l = n + "transform", g[c = n + "transition-property"] = g[h = n + "transition-duration"] = g[p = n + "transition-timing-function"] = g[d = n + "animation-name"] = g[v = n + "animation-duration"] = g[m = n + "animation-timing-function"] = "", e.fx = {off: r === t && a.style.transitionProperty === t, speeds: {_default: 400, fast: 200, slow: 600}, cssPrefix: n, transitionEnd: w("TransitionEnd"), animationEnd: w("AnimationEnd")}, e.fn.animate = function (t, n, r, i) {
        return e.isPlainObject(n) && (r = n.easing, i = n.complete, n = n.duration), n && (n = (typeof n == "number" ? n : e.fx.speeds[n] || e.fx.speeds._default) / 1e3), this.anim(t, n, r, i)
    }, e.fn.anim = function (n, r, i, s) {
        var o, u = {}, a, b = "", w = this, E, S = e.fx.transitionEnd;
        r === t && (r = .4), e.fx.off && (r = 0);
        if (typeof n == "string")u[d] = n, u[v] = r + "s", u[m] = i || "linear", S = e.fx.animationEnd; else {
            a = [];
            for (o in n)f.test(o) ? b += o + "(" + n[o] + ") " : (u[o] = n[o], a.push(y(o)));
            b && (u[l] = b, a.push(l)), r > 0 && typeof n == "object" && (u[c] = a.join(", "), u[h] = r + "s", u[p] = i || "linear")
        }
        return E = function (t) {
            if (typeof t != "undefined") {
                if (t.target !== t.currentTarget)return;
                e(t.target).unbind(S, E)
            }
            e(this).css(g), s && s.call(this)
        }, r > 0 && this.bind(S, E), this.size() && this.get(0).clientLeft, this.css(u), r <= 0 && setTimeout(function () {
            w.each(function () {
                E.call(this)
            })
        }, 0), this
    }, a = null
}(Zepto), function ($) {
    function triggerAndReturn(e, t, n) {
        var r = $.Event(t);
        return $(e).trigger(r, n), !r.defaultPrevented
    }

    function triggerGlobal(e, t, n, r) {
        if (e.global)return triggerAndReturn(t || document, n, r)
    }

    function ajaxStart(e) {
        e.global && $.active++ === 0 && triggerGlobal(e, null, "ajaxStart")
    }

    function ajaxStop(e) {
        e.global && !--$.active && triggerGlobal(e, null, "ajaxStop")
    }

    function ajaxBeforeSend(e, t) {
        var n = t.context;
        if (t.beforeSend.call(n, e, t) === !1 || triggerGlobal(t, n, "ajaxBeforeSend", [e, t]) === !1)return!1;
        triggerGlobal(t, n, "ajaxSend", [e, t])
    }

    function ajaxSuccess(e, t, n) {
        var r = n.context, i = "success";
        n.success.call(r, e, i, t), triggerGlobal(n, r, "ajaxSuccess", [t, n, e]), ajaxComplete(i, t, n)
    }

    function ajaxError(e, t, n, r) {
        var i = r.context;
        r.error.call(i, n, t, e), triggerGlobal(r, i, "ajaxError", [n, r, e]), ajaxComplete(t, n, r)
    }

    function ajaxComplete(e, t, n) {
        var r = n.context;
        n.complete.call(r, t, e), triggerGlobal(n, r, "ajaxComplete", [t, n]), ajaxStop(n)
    }

    function empty() {
    }

    function mimeToDataType(e) {
        return e && (e == htmlType ? "html" : e == jsonType ? "json" : scriptTypeRE.test(e) ? "script" : xmlTypeRE.test(e) && "xml") || "text"
    }

    function appendQuery(e, t) {
        return(e + "&" + t).replace(/[&?]{1,2}/, "?")
    }

    function serializeData(e) {
        e.processData && e.data && $.type(e.data) != "string" && (e.data = $.param(e.data, e.traditional)), e.data && (!e.type || e.type.toUpperCase() == "GET") && (e.url = appendQuery(e.url, e.data))
    }

    function parseArguments(e, t, n, r) {
        var i = !$.isFunction(t);
        return{url: e, data: i ? t : undefined, success: i ? $.isFunction(n) ? n : undefined : t, dataType: i ? r || n : n}
    }

    function serialize(e, t, n, r) {
        var i, s = $.isArray(t);
        $.each(t, function (t, o) {
            i = $.type(o), r && (t = n ? r : r + "[" + (s ? "" : t) + "]"), !r && s ? e.add(o.name, o.value) : i == "array" || !n && i == "object" ? serialize(e, o, n, t) : e.add(t, o)
        })
    }

    var jsonpID = 0, document = window.document, key, name, rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, scriptTypeRE = /^(?:text|application)\/javascript/i, xmlTypeRE = /^(?:text|application)\/xml/i, jsonType = "application/json", htmlType = "text/html", blankRE = /^\s*$/;
    $.active = 0, $.ajaxJSONP = function (e) {
        if ("type"in e) {
            var t = "jsonp" + ++jsonpID, n = document.createElement("script"), r = function () {
                clearTimeout(o), $(n).remove(), delete window[t]
            }, i = function (n) {
                r();
                if (!n || n == "timeout")window[t] = empty;
                ajaxError(null, n || "abort", s, e)
            }, s = {abort: i}, o;
            return serializeData(e), ajaxBeforeSend(s, e) === !1 ? (i("abort"), !1) : (window[t] = function (t) {
                r(), ajaxSuccess(t, s, e)
            }, n.onerror = function () {
                i("error")
            }, n.src = e.url.replace(/=\?/, "=" + t), $("head").append(n), e.timeout > 0 && (o = setTimeout(function () {
                i("timeout")
            }, e.timeout)), s)
        }
        return $.ajax(e)
    }, $.ajaxSettings = {type: "GET", beforeSend: empty, success: empty, error: empty, complete: empty, context: null, global: !0, xhr: function () {
        return new window.XMLHttpRequest
    }, accepts: {script: "text/javascript, application/javascript", json: jsonType, xml: "application/xml, text/xml", html: htmlType, text: "text/plain"}, crossDomain: !1, timeout: 0, processData: !0}, $.ajax = function (options) {
        var settings = $.extend({}, options || {});
        for (key in $.ajaxSettings)settings[key] === undefined && (settings[key] = $.ajaxSettings[key]);
        ajaxStart(settings), settings.crossDomain || (settings.crossDomain = /^([\w-]+:)?\/\/([^\/]+)/.test(settings.url) && RegExp.$2 != window.location.host);
        var dataType = settings.dataType, hasPlaceholder = /=\?/.test(settings.url);
        if (dataType == "jsonp" || hasPlaceholder)return hasPlaceholder || (settings.url = appendQuery(settings.url, "callback=?")), $.ajaxJSONP(settings);
        settings.url || (settings.url = window.location.toString()), serializeData(settings);
        var mime = settings.accepts[dataType], baseHeaders = {}, protocol = /^([\w-]+:)\/\//.test(settings.url) ? RegExp.$1 : window.location.protocol, xhr = settings.xhr(), abortTimeout;
        settings.crossDomain || (baseHeaders["X-Requested-With"] = "XMLHttpRequest"), mime && (baseHeaders.Accept = mime, mime.indexOf(",") > -1 && (mime = mime.split(",", 2)[0]), xhr.overrideMimeType && xhr.overrideMimeType(mime));
        if (settings.contentType || settings.contentType !== !1 && settings.data && settings.type.toUpperCase() != "GET")baseHeaders["Content-Type"] = settings.contentType || "application/x-www-form-urlencoded";
        settings.headers = $.extend(baseHeaders, settings.headers || {}), xhr.onreadystatechange = function () {
            if (xhr.readyState == 4) {
                xhr.onreadystatechange = empty, clearTimeout(abortTimeout);
                var result, error = !1;
                if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304 || xhr.status == 0 && protocol == "file:") {
                    dataType = dataType || mimeToDataType(xhr.getResponseHeader("content-type")), result = xhr.responseText;
                    try {
                        dataType == "script" ? (1, eval)(result) : dataType == "xml" ? result = xhr.responseXML : dataType == "json" && (result = blankRE.test(result) ? null : $.parseJSON(result))
                    } catch (e) {
                        error = e
                    }
                    error ? ajaxError(error, "parsererror", xhr, settings) : ajaxSuccess(result, xhr, settings)
                } else ajaxError(null, xhr.status ? "error" : "abort", xhr, settings)
            }
        };
        var async = "async"in settings ? settings.async : !0;
        xhr.open(settings.type, settings.url, async);
        for (name in settings.headers)xhr.setRequestHeader(name, settings.headers[name]);
        return ajaxBeforeSend(xhr, settings) === !1 ? (xhr.abort(), !1) : (settings.timeout > 0 && (abortTimeout = setTimeout(function () {
            xhr.onreadystatechange = empty, xhr.abort(), ajaxError(null, "timeout", xhr, settings)
        }, settings.timeout)), xhr.send(settings.data ? settings.data : null), xhr)
    }, $.get = function (e, t, n, r) {
        return $.ajax(parseArguments.apply(null, arguments))
    }, $.post = function (e, t, n, r) {
        var i = parseArguments.apply(null, arguments);
        return i.type = "POST", $.ajax(i)
    }, $.getJSON = function (e, t, n) {
        return $.ajax(parseArguments(e, t, n, "json"))
    }, $.fn.load = function (e, t, n) {
        if (!this.length)return this;
        var r = this, i = e.split(/\s/), s, o = parseArguments(e, t, n), u = o.success;
        return i.length > 1 && (o.url = i[0], s = i[1]), o.success = function (e) {
            r.html(s ? $("<div>").html(e.replace(rscript, "")).find(s) : e), u && u.apply(r, arguments)
        }, $.ajax(o), this
    };
    var escape = encodeURIComponent;
    $.param = function (e, t) {
        var n = [];
        return n.add = function (e, t) {
            this.push(escape(e) + "=" + escape(t))
        }, serialize(n, e, t), n.join("&").replace(/%20/g, "+")
    }
}(Zepto), function (e) {
    e.fn.serializeArray = function () {
        var t = [], n;
        return e(Array.prototype.slice.call(this.get(0).elements)).each(function () {
            n = e(this);
            var r = n.attr("type");
            this.nodeName.toLowerCase() != "fieldset" && !this.disabled && r != "submit" && r != "reset" && r != "button" && (r != "radio" && r != "checkbox" || this.checked) && t.push({name: n.attr("name"), value: n.val()})
        }), t
    }, e.fn.serialize = function () {
        var e = [];
        return this.serializeArray().forEach(function (t) {
            e.push(encodeURIComponent(t.name) + "=" + encodeURIComponent(t.value))
        }), e.join("&")
    }, e.fn.submit = function (t) {
        if (t)this.bind("submit", t); else if (this.length) {
            var n = e.Event("submit");
            this.eq(0).trigger(n), n.defaultPrevented || this.get(0).submit()
        }
        return this
    }
}(Zepto), function (e, t) {
    function u(n, r, i, s, o) {
        typeof r == "function" && !o && (o = r, r = t);
        var u = {opacity: i};
        return s && (u.scale = s, n.css(e.fx.cssPrefix + "transform-origin", "0 0")), n.animate(u, r, null, o)
    }

    function a(t, n, r, i) {
        return u(t, n, 0, r, function () {
            s.call(e(this)), i && i.call(this)
        })
    }

    var n = window.document, r = n.documentElement, i = e.fn.show, s = e.fn.hide, o = e.fn.toggle;
    e.fn.show = function (e, n) {
        return i.call(this), e === t ? e = 0 : this.css("opacity", 0), u(this, e, 1, "1,1", n)
    }, e.fn.hide = function (e, n) {
        return e === t ? s.call(this) : a(this, e, "0,0", n)
    }, e.fn.toggle = function (n, r) {
        return n === t || typeof n == "boolean" ? o.call(this, n) : this.each(function () {
            var t = e(this);
            t[t.css("display") == "none" ? "show" : "hide"](n, r)
        })
    }, e.fn.fadeTo = function (e, t, n) {
        return u(this, e, t, null, n)
    }, e.fn.fadeIn = function (e, t) {
        var n = this.css("opacity");
        return n > 0 ? this.css("opacity", 0) : n = 1, i.call(this).fadeTo(e, n, t)
    }, e.fn.fadeOut = function (e, t) {
        return a(this, e, null, t)
    }, e.fn.fadeToggle = function (t, n) {
        return this.each(function () {
            var r = e(this);
            r[r.css("opacity") == 0 || r.css("display") == "none" ? "fadeIn" : "fadeOut"](t, n)
        })
    }
}(Zepto), function (e) {
    function i(t) {
        return t = e(t), (!!t.width() || !!t.height()) && t.css("display") !== "none"
    }

    function f(e, t) {
        e = e.replace(/=#\]/g, '="#"]');
        var n, r, i = o.exec(e);
        if (i && i[2]in s) {
            n = s[i[2]], r = i[3], e = i[1];
            if (r) {
                var u = Number(r);
                isNaN(u) ? r = r.replace(/^["']|["']$/g, "") : r = u
            }
        }
        return t(e, n, r)
    }

    var t = e.zepto, n = t.qsa, r = t.matches, s = e.expr[":"] = {visible: function () {
        if (i(this))return this
    }, hidden: function () {
        if (!i(this))return this
    }, selected: function () {
        if (this.selected)return this
    }, checked: function () {
        if (this.checked)return this
    }, parent: function () {
        return this.parentNode
    }, first: function (e) {
        if (e === 0)return this
    }, last: function (e, t) {
        if (e === t.length - 1)return this
    }, eq: function (e, t, n) {
        if (e === n)return this
    }, contains: function (t, n, r) {
        if (e(this).text().indexOf(r) > -1)return this
    }, has: function (e, n, r) {
        if (t.qsa(this, r).length)return this
    }}, o = new RegExp("(.*):(\\w+)(?:\\(([^)]+)\\))?$\\s*"), u = /^\s*>/, a = "Zepto" + +(new Date);
    t.qsa = function (r, i) {
        return f(i, function (s, o, f) {
            try {
                var l;
                !s && o ? s = "*" : u.test(s) && (l = e(r).addClass(a), s = "." + a + " " + s);
                var c = n(r, s)
            } catch (h) {
                throw console.error("error performing selector: %o", i), h
            } finally {
                l && l.removeClass(a)
            }
            return o ? t.uniq(e.map(c, function (e, t) {
                return o.call(e, t, c, f)
            })) : c
        })
    }, t.matches = function (e, t) {
        return f(t, function (t, n, i) {
            return(!t || r(e, t)) && (!n || n.call(e, null, i) === e)
        })
    }
}(Zepto);